#ifndef ROULETTESELECTION_H_
#define ROULETTESELECTION_H_

#include "../Selection.h"
#include "../../Solution/Solution.h"
#include "../../Random/MyRandom.h"
#include <FLOAT.H>
#include <vector>

using namespace std;

/** Implementation of a Roulette style selection.
 */
class RouletteSelection : public Selection
{
    public:
        RouletteSelection() { };
        virtual void select(Solution* &, Solution* &);
        virtual void prepare(vector<Solution*>);
        
        static Selection* getSelection();        
    protected:
        void clean();
        double totalFitness;
        vector<Solution*> genePool;
        vector<float> wheel;
};


#endif /*ROULETTESELECTION_H_*/
